package com.zg.scf.domain.req.plan;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zg.common.core.req.AddReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * DESCRIPTION
 *
 * @author zhanfeng.liang
 * @since 2025-07-14
 */

@Data
@ApiModel(value = "铁路计划AddReq")
public class RailwayPlanAddReq extends AddReq {

    /**
     * 计划号
     */
    @NotEmpty(message = "计划号不能为空")
    private String planNo;

    /**
     * 类型
     */
    @NotEmpty(message = "类型不能为空")
    private String type;

    /**
     * 收货单位
     */
    @NotEmpty(message = "收货单位不能为空")
    private String receiveUnit;

    /**
     * 日期
     */
    @NotNull(message = "日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd",shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date planDate;

    /**
     * 发站
     */
    @NotEmpty(message = "发站不能为空")
    private String departStation;

    /**
     * 装车点
     */
    @NotEmpty(message = "装车点不能为空")
    private String loadingPoint;

    /**
     * 矿点
     */
    @NotEmpty(message = "矿点不能为空")
    private String minePoint;

    /**
     * 到站
     */
    @NotEmpty(message = "到站不能为空")
    private String arriveStation;

    /**
     * 卖方
     */
    @NotEmpty(message = "卖方不能为空")
    private String seller;

    /**
     * 车数
     */
    @NotNull(message = "车数不能为空")
    private Integer trainCarCount;

    /**
     * 吨数
     */
    @NotNull(message = "吨数不能为空")
    private BigDecimal quantity;

    /**
     * 下达日期
     */
    @NotNull(message = "下达日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd",shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date issueDate;

    /**
     * 所属公司
     */
    @NotEmpty(message = "所属公司不能为空")
    private String company;

    /**
     * 局别
     */
    @NotEmpty(message = "局别不能为空")
    private String bureau;

    /**
     * 运行状态
     */
    @NotEmpty(message = "运行状态不能为空")
    private String runStatus;

    private String coalType;          // 煤种
}
